//
//  DateTools.h
//  CommonTools
//
//  Created by guowk on 13-1-6.
//  Copyright (c) 2013年 guowk. All rights reserved.
//
// 日期格式化工具
//
// Version : 1.0


#import <Foundation/Foundation.h>


@interface DateTools : NSObject
{
  
}

#pragma mark - 
#pragma mark ==========================================
#pragma mark init

/** 获得对像 单例模式 */
+ (id)getInstance;

#pragma mark -
#pragma mark ==========================================
#pragma mark 日期格式转换

/** 
 * 功能：Date 转 DateString
 * 参数：
 *      NSDate          date            日期
 *      NSString        sep             生成字符串的间隔符
 * 返回：返回相应格式的日期字符串
 * 
 * sep 说明
 * - yyyyMMdd 20120101
 * - yyyy年MM月dd日 2012年01月01日
 */
- (NSString *)dateToString:(NSDate *)date separator:(NSString *)sep;

/**
 * 功能：DateString 转 Date
 * 参数：
 *      NSString        string          相应格式的日期字符串
 *      NSString        sep             生成字符串的间隔符
 * 返回：返回NSDate对像
 *
 * sep 说明
 * - yyyyMMdd 20120101
 * - yyyy年MM月dd日 2012年01月01日
 */
- (NSDate *)stringToDate:(NSString *)string separator:(NSString *)sep;

/**
 * 功能：DateString 转 DateString
 * 参数：
 *      NSString        fromString          要转化的日期字符串
 *      NSString        fromSep             要转化字符串的间隔符
 *      NSString        toString            转化结果的日期字符串
 *      NSString        toSep               生成字符串的间隔符
 * 返回：返回NSDate对像
 *
 * fromSep 和 toSep 说明
 * - yyyyMMdd 20120101
 * - yyyy年MM月dd日 2012年01月01日
 */
- (NSString *)stringToString:(NSString *)fromString
               fromSeparator:(NSString *)fromSep
                    toString:(NSString *)toString
                 toSeparator:(NSString *)toSep;

#pragma mark -
#pragma mark ==========================================
#pragma mark 常用

/**
 *  功能：判断一个年份是否是闰年
 *  参数：
 *        int           year           年份
 *  返回：BOOL    - YES : 闰年  NO : 平年
 */
- (BOOL)isLeapYear:(int)year;

/**
 *  功能：比较两个日期哪一天较早
 *  参数：
 *        NSDate           firstDate           第一个日期
 *        NSDate           secondDate          第二个日期
 *  返回：BOOL    - YES : firstDate >= second  NO : firstDate<secondDate
 */
- (BOOL)compareBOOL:(NSDate *)firstDate secondDate:(NSDate *)secondDate;

/**
 *  功能：比较两个日期相差的天数 ， 返回相差的天数
 *  参数：
 *        NSDate           firstDate           第一个日期
 *        NSDate           secondDate          第二个日期
 *  返回：返回相差的天数 int = (firstDate - secondDate)
 */
- (int)compareNumber:(NSDate *)firstDate secondDate:(NSDate *)secondDate;

/**
 *  功能：根据生日到得年龄
 *  参数：
 *        NSDate           date           生日
 *  返回：年龄 int
 */
- (int)age:(NSDate *)birthday;

/**
 *  功能：给定日期是星期几
 *  参数：
 *        NSDate           date           日期
 *  返回：1 : 星期一 ... 7 : 星期日
 */
- (int)weekForDate:(NSDate *)date;

#pragma mark -
#pragma mark ==========================================
#pragma mark 根据条件获得日期

/**
 *  功能：根据所得日期往前后推n天
 *  参数：
 *        NSDate           date             日期
 *        int              number           相隔的天数
 *  返回：NSDate
 */
- (NSDate *)dateFromDate:(NSDate *)date dayCount:(int)number;

/**
 *  功能：根据所得日期往前后推n天
 *  参数：
 *        NSDate           date             日期
 *        int              number           相隔的天数
 *  返回：返回一个数组   -里面放NSDate对像
 */
- (NSArray *)dateArrayFromDate:(NSDate *)date dayCount:(int)number;

/**
 *  功能：根据所得日期往前后推n天
 *  参数：
 *        NSDate           date             日期
 *        int              number           相隔的天数
 *        NSString         sep              生成字符串的间隔符
 *  返回：返回一个数组   -里面放string对像
 *
 * sep 说明
 * - yyyyMMdd 20120101
 * - yyyy年MM月dd日 2012年01月01日
 */
- (NSArray *)dateArrayFromDate:(NSDate *)date dayCount:(int)number separator:(NSString *)sep;

/**
 *  功能：前一天
 *  参数：-
 *  返回：返回一个数组   -里面放NSDate对像
 */
- (NSDate *)preDate;

/**
 *  功能：后一天
 *  参数：-
 *  返回：返回一个数组   -里面放NSDate对像
 */
- (NSDate *)nextDate;

@end
